package com.liuf.di.service;

import com.github.pagehelper.PageInfo;
import com.liuf.di.api.ServiceException;
import org.pentaho.di.core.RowMetaAndData;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * @program: spring-cloud-liuf-master
 * @description: 元数据业务管理接口
 * @author: Mr.Liu
 * @create: 2018-09-04 14:57
 * @码云： https://gitee.com/www.jiandan.com
 **/
public interface IDatabaseService {

    /**
     * 获取元数据库列表信息
     * @param params Map<String,Object> 请求参数
     * @return  PageInfo    分页结果
     * @throws ServiceException 统一异常处理类
     */
    PageInfo getDatabases(Map<String,Object> params) throws ServiceException;

    /**
     * 存储元数据库基础信息
     * @param param Map<String,Object>
     * @return  int
     * @throws ServiceException 统一异常处理类
     */
    String save(Map<String,String> param) throws ServiceException;

    /**
     * 查询元数据库信息
     * @param id    查询参数
     * @return  Map
     * @throws ServiceException 统一异常处理类
     */
    Map<String,Object> getDatabase(long id) throws ServiceException;

    /**
     * 删除元数据库信息
     * @param name    主键
     * @return  int
     * @throws ServiceException 统一异常处理类
     */
    boolean detele(String name) throws ServiceException;

    /**
     * 查询用户定义的数据库的详细信息列表
     * @param params 参数Map
     * @return  list
     * @throws ServiceException 统一异常处理类
     */
    List<Map<String,Object>> getDatabaseAttribute(Map<String,Object> params) throws ServiceException;

    /**
     * 查询数据库的连接方式列表
     *      有NATIVE，ODBC，OCI，Plugin和JNDI五种
     * @param params    查询参数
     * @return  list
     * @throws ServiceException 统一异常处理类
     */
    List<Map<String,Object>> getDatabaseContype(Map<String,Object> params) throws ServiceException;

    /**
     * 查询kettle支持的所有的数据库类型列表
     * @param params    参数Map
     * @return  List
     * @throws ServiceException 统一异常处理类
     */
    List<Map<String,Object>> getDatabaseType(Map<String,Object> params) throws ServiceException;
    /**
     * 验证kettle元数据数据库是否存在（true：存在 false：不存在）
     * @param name  元数据数据名称
     * @return  boolean
     * @throws ServiceException 统一异常处理类
     */
    Boolean booleanDataBase(String name) throws ServiceException;
}
